/**
 * 在 React 18 版本前，setState 可能是异步的。当我们的 setState 调用放在 setTimeout 、setInterval 这些代码中时，setState 就是同步执行的
 */

import React from "react";

class App extends React.Component {
  state = {
    count: 1,
  };

  componentDidMount() {
    setTimeout(() => {
      this.setState({
        count: 10,
      });

      /**
       * 当使用 18版本的 createRoot() 方式来渲染时，这里的 setState 是异步的。输出 1
       * 当使用 18版本前的 render() 方法来渲染时，这里的 setState 是同步的。输出 10
       */
      console.log(this.state.count);
    });
  }

  render() {
    return (
      <div>
        <h1>State</h1>
        <p>{this.state.count}</p>
      </div>
    );
  }
}

export default App;
